This invention relates to data transmission codes and, more specifically, is concerned with a method and apparatus for encoding data for serial transmission. The invention is particularly, although not exclusively, concerned with transmission of data over optical fibre links.
It is known to encode data for serial transmission using a block coding scheme, in which a block of N input data bits is encoded as a block of M code bits, M being greater than N. For example, in a 5B:6B coding scheme, a block of 5 data bits is encoded as a block of 6 code bits.
The following properties are important when devising such a coding scheme.
(a) Transition density: the number of transitions (from 0 to 1 or from 1 to 0) in each code block. The greater the transition density, the easier it is to extract clock information from the encoded signal at the receiving end, which allows the receiver electronics to be simpler and cheaper.
(b) Code run bound: the maximum number of contiguous 0's or contiguous 1's that can occur in the encoded data stream. Bandwidth limitations in the transmission link cause distortion of data waveforms transmitted over it, which can cause the width of a pulse to widen and to be interpreted wrongly. This problem can be reduced by placing severe limits on the code run bound.
(c) D.C. content: significant imbalance between the number of 0's and the number of 1's in the encoded data stream can cause severe loss of waveform integrity on A.C. coupled links, since any D.C. content cannot be transmitted and this information is simply lost at the receiver. To some extent, this loss can be accommodated by providing a higher bandwidth transmission medium or by using special compensation techniques at the receiver. However, it is much better to employ codes that are free of any net D.C. component, so as to gain the advantages of lower error rates or lower cost line components.
Telecommunications systems have employed 5B:6B codes, because they allow the above properties to be optimised with relative simplicity. However, there is clearly a mismatch between such a code and the 8-bit byte which is commonly used by data processing apparatus.
U.S. Pat. No. 4 486 739 describes an 8B:10B block coding scheme, which converts an eight-bit byte into a 10-bit code block. This overcomes the mismatch problem, since each byte can be individually encoded.
One object of the present invention is to provide an improved 8B:10B coding scheme which has improved transition density and code run bound properties compared with the scheme described in the above-mentioned U.S. patent.